<?php
/**
 * 接口类
*/

namespace houze;

class Restful{
    /**
     * 存储请求
     */
    protected $param = null;
    /**
     * 存储配置信息
     */
    protected $config = null;

    /**
     * 初始化
     */
    public function __construct(){
        $this->config = \houze\Config::get('restful');
    }

    /**
     * 注入请求数据
     */
    public function data($param){
        $this->param =  $param;
        return $this;
    }

    /**
     * 加密签名
     */
    public function setSign(){
        if(!empty($this->param)){
            // 对参数进行排序
            ksort($this->param);
            // 在请求里添加私钥
            $this->param['secret'] = $this->config['secret'];
            // 存储参数字符串
            $str = '';
            // 拼接参数为字符串
            foreach($this->param as $k => $v){
                $str .= $v;
            }
            // 返回签名
            return md5($str);
        }else{
            return false;
        }
    }

    /**
     * 验证签名
     */
    public function getSign(){
        if(!empty($this->param)){
            if(!isset($this->param['sign'])) return false;
            if(!isset($this->param['timestamp'])) return false;
            // 超时验证 1分钟失效
            if(time() - $this->param['timestamp'] > 60){
                return false;
            }
            // 对参数进行排序
            ksort($this->param);
            // 在请求里添加私钥
            $this->param['secret'] = $this->config['secret'];
            // 存储参数字符串
            $str = '';
            // 拼接参数为字符串
            foreach($this->param as $k => $v){
                if($k == 'sign') continue;
                if($k == 'timestamp') continue;
                $str .= $v;
            }
            // 签名验证
            if($this->param['sign'] == md5($str)){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }
}